package db_model

import (
	"time"
)

// OAuthUser 表示 OAuth 用户关联表结构
type OAuthUser struct {
	ID           string     `json:"id" gorm:"type:uuid;primaryKey;default:gen_random_uuid()"`
	UserID       string     `json:"user_id" gorm:"type:uuid;not null"`
	Provider     string     `json:"provider" gorm:"size:50;not null"`
	ProviderID   string     `json:"provider_id" gorm:"size:500;not null"`
	Email        string     `json:"email" gorm:"size:500;not null"`
	Name         string     `json:"name" gorm:"size:500;not null"`
	AvatarURL    *string    `json:"avatar_url,omitempty" gorm:"type:text"`
	AccessToken  string     `json:"-" gorm:"type:text;not null"` // 不序列化到 JSON
	RefreshToken *string    `json:"-" gorm:"type:text"`          // 不序列化到 JSON
	ExpiresAt    time.Time  `json:"expires_at" gorm:"type:timestamptz;not null"`
	CreatedAt    time.Time  `json:"created_at" gorm:"type:timestamptz;not null;default:CURRENT_TIMESTAMP"`
	UpdatedAt    *time.Time `json:"updated_at,omitempty" gorm:"type:timestamptz"`
}

// TableName 指定表名
func (OAuthUser) TableName() string {
	return "oauth_users"
}
